Imaging applications may utilize various color correction techniques, such as white balance or lighting compensation techniques, to enhance or sharpen digital images. For example, the digital image may be color corrected to adjust for both camera and lighting conditions. Current color correction techniques, however, rarely maintain colorimetric accuracy.
Most imaging applications apply color correction techniques to achieve pleasing results according to user preferences. Further, many automatic color correction methods are based on either a “white world” assumption or a “gray world” assumption. The former assumes any given image has at least some areas that are white, while the latter presumes adding all colors in an image should average to gray. These assumptions are inadequate for extracting true colors from a digital image. In particular, for facial images, the gray world assumption is often invalid as the image is dominated by flesh tone.
Additionally, existing color processing algorithms fail to take into account the relationships among the various colors within an image. These algorithms often attempt to modify individual colors according to user preferences. Sometimes the color enhancement algorithms tend to ignore the perceptual aspects of color, in other words, how the human visual system perceives color in terms of lightness, chroma and hue. Any algorithm that operates directly on the raw digital data (e.g. red, green, and blue channel data) from an image, without considering the above-mentioned perceptual attributes, is characterized by this trait. Applying such a method renders it impossible to predict the original facial colors under a reference lighting condition. As such, many existing color correction techniques do not provide for the reproduction of the actual colors of an object in a digital image.
Existing color correction techniques that attempt to reproduce colorimetrically accurate images require the use of a reference dataset such as a color target or image metadata. Use of such reference datasets requires additional action on the part of the user and, thus, is rather inconvenient for typical consumer applications.